package org.biloxi.model.mutable;

import java.util.Map;

import org.biloxi.model.GameState;
import org.biloxi.model.mutable.player.PlayerStateMutable;
import org.biloxi.model.mutable.player.ZoneMutable;
import org.biloxi.model.player.Zone;
import org.biloxi.player.PlayerID;

public interface GameStateMutable extends GameState {

	/**
	 * Sets the player id of whoever's turn it is.
	 * @return
	 */
	public void setTurnsPlayerID(PlayerID pid);
	
	
	/**
	 * Sets the phase of the game.
	 * @return
	 */
	public void setPhase(Phase phase);

	/**
	 * Gets Map of MutablePlayerStates for all players.
	 * @return
	 */
	public Map<PlayerID,PlayerStateMutable> mutablePlayerStates();

	/**
	 * Convenience method for retrieving PlayerState given a PlayerID.
	 * @return
	 */
	public PlayerStateMutable mutablePlayerState(PlayerID pid);
	
	public ZoneMutable getMutableZone(Zone z);
	
}
